//package com.example.a7822.myapplication.shopcart.model;
//
//import android.content.Context;
//import android.os.Handler;
//import android.os.Message;
//import android.text.TextUtils;
//import android.widget.Toast;
//
//import com.example.a7822.myapplication.shopcart.SPCartManager;
//import com.example.a7822.myapplication.shopcart.beans.GoodBean;
//import com.example.a7822.myapplication.shopcart.common.PayResult;
//import com.example.a7822.myapplication.shopcart.common.Urls;
//import com.example.a7822.myapplication.shopcart.view.SubmitOrderActivity;
//import com.example.a7822.myapplication.utils.Logger;
//import com.zhy.http.okhttp.OkHttpUtils;
//
//import org.json.JSONException;
//import org.json.JSONObject;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//
///**
// * Created by CP on 2017/4/21. 15:05.
// */
//
//public class GoodsBiz {
//
//    private Logger logger = Logger.getLogger(GoodsBiz.class);
//    public void setmContext(Context mContext) {
//        this.mContext = mContext;
//    }
//
//    private Context mContext;
//    private String mUrl = "http://116.62.119.53/SMAccount/getGeneratedOrderInfo?addressId=5&shopId=22&shipCost=0&items[0][good_shelve_id]=23&items[0][good_num]=11";
//    private String mShopId;
//    private List<GoodBean> mGoodsList;
//    private double mTotalMoney;
//    private double mTotalGoodsMoney;
//
//
//    Context ctx;
//    String payInfo;
//    private int mTotalGoodsNum;
//
//    public List<CouponEntity> getmCouponList() {
//        return mCouponList;
//    }
//
//    public void setmCouponList(List<CouponEntity> mCouponList) {
//        this.mCouponList = mCouponList;
//    }
//
//    private List<CouponEntity> mCouponList;
//
//
//    public String getmNewOrderID() {
//        return mNewOrderID;
//    }
//
//    public void setmNewOrderID(String mNewOrderID) {
//        this.mNewOrderID = mNewOrderID;
//    }
//
//    private static String mNewOrderID;//订单ID
//    private static String mNewOrderCode;//订单编号
//
//    public String getmNewOrderCode() {
//        return mNewOrderCode;
//    }
//
//    public void setmNewOrderCode(String mNewOrderCode) {
//        this.mNewOrderCode = mNewOrderCode;
//    }
//
//    private GoodsBiz() {
//        mGoodsList = SPCartManager.getInstance().getGoodList();
//        mCouponList = SPCartManager.getInstance().getCouponList();
//        getShopId();
//        countMoney_goodsNum();
//    }
//
//    static class InstanceHolder {
//        private static final GoodsBiz instance = new GoodsBiz();
//    }
//
//    public static GoodsBiz getInstance() {
//        return InstanceHolder.instance;
//    }
//
//    String getShopId() {
//        mShopId = SPCartManager.getInstance().getCurShopID();
//        return mShopId;
//    }
//
//    List<GoodBean> getGoodsList() {
//        return SPCartManager.getInstance().getGoodList();
//    }
//
//    public  void countMoney_goodsNum() {
//        mTotalGoodsNum=SPCartManager.getInstance().getTotalCount();
//        mTotalMoney=SPCartManager.getInstance().getTotalPrice();
//
//    }
//
//    public double getTotalMoney() {
//        //make sure the money is latest
//        countMoney_goodsNum();
//        return mTotalMoney;
//    }
//
//
//    public double getmTotalGoodsMoney() {
//        mTotalGoodsMoney = SPCartManager.getInstance().getTotalGoodsPrice();
//        return mTotalGoodsMoney;
//    }
//
//    public int getmTotalGoodsNum(){
//        return mTotalGoodsNum;
//    }
//
//    /**
//     * 构造URL，并发送至服务器，使服务器返回订单编号
//     * @param addressId
//     * @param callback
//     */
//    public void makeSendedUrl(String addressId, final callBackToActivity callback) {
//        int l = SPCartManager.getInstance().getGoodList().size();
//       List<GoodBean> nowGoodsList=SPCartManager.getInstance().getGoodList();
//
//        List<OkHttpUtils.Param> params = new ArrayList<>();
//
//        OkHttpUtils.Param paramAddressId = new OkHttpUtils.Param("addressId", addressId);
//        logger.d("addressId: %s", addressId);
//        params.add(paramAddressId);
//
//        OkHttpUtils.Param paramShopId = new OkHttpUtils.Param("shopId", getShopId());
//        logger.d("getShopId: %s", getShopId());
//        params.add(paramShopId);
//        //订单来源：1-自助购
//        OkHttpUtils.Param paramOrderSource = new OkHttpUtils.Param("orderSource", "1");
//        params.add(paramOrderSource);
////        params.add( new OkHttpUtils.Param("orderCode",SPCartManager.getInstance().getOrderNum()));
////        params.add( new OkHttpUtils.Param("orderStatus",""));
////        params.add( new OkHttpUtils.Param("orderPrice",SPCartManager.getInstance().getTotalCount()+""));
//
//        OkHttpUtils.Param paramShipCost = new OkHttpUtils.Param("shipCost", String.valueOf(0));
//        params.add(paramShipCost);
//
//        for (int i = 0; i < l; i++) {
//            OkHttpUtils.Param paramGoodId = new OkHttpUtils.Param("items[" + i + "]" + "[good_shelve_id]", String.valueOf(nowGoodsList.get(i).getGoodId()));
//            params.add(paramGoodId);
//            OkHttpUtils.Param paramGoodNum = new OkHttpUtils.Param("items[" + i + "]" + "[good_num]", String.valueOf(nowGoodsList.get(i).getGoodAmount()));
//            params.add(paramGoodNum);
//        }
//        //上传优惠券信息
//        List<CouponEntity> selectedCouponList = SPCartManager.getInstance().getSelectedCouponList();
//        int couponSize = selectedCouponList.size();
//        for (int i = 0; i < couponSize; i++) {
//            CouponEntity couponEntity = selectedCouponList.get(i);
//            OkHttpUtils.Param cid = new OkHttpUtils.Param("coupons[" + i + "]" + "[id]", String.valueOf(couponEntity.getId()));
//            params.add(cid);
//            OkHttpUtils.Param ctype = new OkHttpUtils.Param("coupons[" + i + "]" + "[type]", String.valueOf(couponEntity.getType()));
//            params.add(ctype);
//            OkHttpUtils.Param cvalue = new OkHttpUtils.Param("coupons[" + i + "]" + "[value]", String.valueOf(couponEntity.getValue()));
//            params.add(cvalue);
//        }
//
//
//        OkHttpUtils.ResultCallback<String> callbackGenerateOrder = new OkHttpUtils.ResultCallback<String>() {
//            @Override
//            //返回成功
//            public void onSuccess(String response) {
//                logger.d("makeSendedUrl",response);
//                if (response != null) {
//                    try {
//                        JSONObject jsonObject = new JSONObject(response);
//                        logger.d(response);
//                        if (jsonObject.getInt("status") == 0) {
//                            //服务器对于请求的订单，生成相应的orderNumber,返回给客户端
//                            mNewOrderID = jsonObject.getString("orderId");
//                            mNewOrderCode = jsonObject.getString("orderNumber");
//                            SPCartManager.getInstance().setOrderNum(mNewOrderID);
//
//                            //返回成功才弹出选择支付
//                            callback.onFinishiGet();
//
//                        } else if (jsonObject.getInt("status") == 1) {
//                            Toast.makeText(mContext, response, Toast.LENGTH_LONG);
//                            //参数错误
//                        } else if (jsonObject.getInt("status") == 2) {
//                            Toast.makeText(mContext, response, Toast.LENGTH_LONG);
//                        }
//                    } catch (JSONException e) {
//                        logger.d("makeSendedUrl", e.toString());
//                        Toast.makeText(mContext, "服务器返回json格式异常 ：\n" + e.toString(), Toast.LENGTH_LONG);
//                    }
//                    }
//            }
//
//            @Override
//            public void onFailure(Exception e) {
//                logger.d("makeSendedUrl",e.toString());
//                Toast.makeText(mContext, "网络异常 : " + e.toString(), Toast.LENGTH_LONG);
//            }
//        };
//
//        OkHttpUtils.post(Urls.POST_GenerateOrder, callbackGenerateOrder, params);
//
//    }
//
//    /**
//     * 发送之前从服务器获取的订单编号，订单编号用于生成支付宝的payinfo并返回给客户端
//     * @param context
//     */
//    public void sendOrderNum(final Context context) {
//        ctx = context;
//        final int SDK_PAY_FLAG = 1;
//        //POST 请求参数
//        List<OkHttpUtils.Param> params = new ArrayList<>();
//        //参数：订单编号
//        OkHttpUtils.Param orderNumPara = new OkHttpUtils.Param("orderNumber", mNewOrderCode);
//        params.add(orderNumPara);
//        //POST请求回调
//        OkHttpUtils.ResultCallback<String> payinfoCallbak = new OkHttpUtils.ResultCallback<String>() {
//            @Override
//            public void onSuccess(String response) {
//
//                try {
//                    JSONObject jsonObject = new JSONObject(response);
//                    if (jsonObject.getInt("status") == 0) {
//                        //获取到的payInfo
//                        payInfo = jsonObject.getString("message");
//                        doAlipay(payInfo);
//
////                        Runnable payRunnable = new Runnable() {
////                            @Override
////                            public void run() {
////                                PayTask payTask = new PayTask((Activity) context);
////                                Map<String, String> result = payTask.payV2(payinfo, true);
////                                Message msg = new Message();
////                                msg.what = SDK_PAY_FLAG;
////                                msg.obj = new Object[]{result, context};
////                                mHandler.sendMessage(msg);
////                            }
////                        };
////                        Thread payThread = new Thread(payRunnable);
////                        payThread.start();
//                    }
//                } catch (JSONException e) {
//                    e.printStackTrace();
//                }
//
//            }
//
//            @Override
//            public void onFailure(Exception e) {
//
//            }
//        };
//
//        OkHttpUtils.post( Urls.POST_PAY_BY_ORDERNUMBER, payinfoCallbak, params);
//
//    }
//    /**
//     * 支付宝支付
//     * @param pay_param 支付服务生成的支付参数
//     */
//    private void doAlipay(String pay_param) {
//        new Alipay(ctx, pay_param, new Alipay.AlipayResultCallBack() {
//            @Override
//            public void onSuccess() {
//                Toast.makeText(ctx.getApplicationContext(), "支付成功", Toast.LENGTH_SHORT).show();
//                //成功后更新ui
//                SubmitOrderActivity ss = (SubmitOrderActivity) ctx;
//                ss.bottomDialog.dismiss();
//                ss.showDelDialog();
//            }
//
//            @Override
//            public void onDealing() {
//                Toast.makeText(ctx.getApplicationContext(), "支付处理中...", Toast.LENGTH_SHORT).show();
//            }
//
//            @Override
//            public void onError(int error_code) {
//                switch (error_code) {
//                    case Alipay.ERROR_RESULT:
//                        Toast.makeText(ctx.getApplicationContext(), "支付失败:支付结果解析错误", Toast.LENGTH_SHORT).show();
//                        break;
//
//                    case Alipay.ERROR_NETWORK:
//                        Toast.makeText(ctx.getApplicationContext(), "支付失败:网络连接错误", Toast.LENGTH_SHORT).show();
//                        break;
//
//                    case Alipay.ERROR_PAY:
//                        Toast.makeText(ctx.getApplicationContext(), "支付错误:支付码支付失败", Toast.LENGTH_SHORT).show();
//                        break;
//
//                    default:
//                        Toast.makeText(ctx.getApplicationContext(), "支付错误", Toast.LENGTH_SHORT).show();
//                        break;
//                }
//
//            }
//
//            @Override
//            public void onCancel() {
//                Toast.makeText(ctx.getApplicationContext(), "支付取消", Toast.LENGTH_SHORT).show();
//            }
//        }).doPay();
//    }
//    /**
//     * After pay succeess
//     */
//    private Handler mHandler = new Handler() {
//
//        public void handleMessage(Message msg) {
//            final int SDK_PAY_FLAG = 1;
//            Object[] receObj = (Object[]) msg.obj;
//            switch (msg.what) {
//                case SDK_PAY_FLAG: {
//                    @SuppressWarnings("unchecked")
//                    PayResult payResult = new PayResult((Map<String, String>) receObj[0]);
//                    /**
//                     对于支付结果，请商户依赖服务端的异步通知结果。同步通知结果，仅作为支付结束的通知。
//                     */
//                    String resultInfo = payResult.getResult();// 同步返回需要验证的信息
//                    String resultStatus = payResult.getResultStatus();
//                    // 判断resultStatus 为9000则代表支付成功
//                    if (TextUtils.equals(resultStatus, "9000")) {
//                        // 该笔订单是否真实支付成功，需要依赖服务端的异步通知。
//                        Toast.makeText((Context) receObj[1], "支付成功", Toast.LENGTH_SHORT).show();
////                        EventBus.getDefault().postSticky(CartEvent.CUSTOMER_PAY_SUCCESS);
//
//                        //成功后更新ui
//                        SubmitOrderActivity ss = (SubmitOrderActivity) receObj[1];
//                        ss.bottomDialog.dismiss();
//                        ss.showDelDialog();
//                    } else {
//                        // 该笔订单真实的支付结果，需要依赖服务端的异步通知。
//                        Toast.makeText((Context) receObj[1], "支付失败", Toast.LENGTH_SHORT).show();
//                    }
//                    break;
//                }
//                default:
//                    break;
//            }
//        }
//
//    };
//
//    public interface callBackToActivity {
//        void onFinishiGet();
//
//        void onErrorGet();
//    }
//    public void clearAll(){
//        mCouponList.clear();
//        mGoodsList.clear();
//        mTotalGoodsMoney = 0;
//        mTotalMoney = 0;
//        mNewOrderCode = null;
//        mNewOrderID = null;
//    }
//}
